package com.res0w.SMMS.starter;

import java.io.UnsupportedEncodingException;

import javax.swing.UIManager;

/**
 * 启动类，主要作用是获得程序运行的【真实路径】.
 * 1、对操作系统进行判断
 * 2、分别判断编译模式和打包之后的模式
 * 
 * 初始化并启动Core类，初始化并启动Login类。
 * @author res0w && JianFeng
 * @since 2009-9-15
 * @version 0.1
 * @OriginalProject Linker 0.1
 */

/*
 * final class是一个不能被extend的类
 * A final class is a Java class which cannot be extended.
 *This means that a final class can not become a superclass nor have a subclass.
 */
final class SMMS extends Object {

    public static void main(final String[] args) {

        try {
            // 设置系统lookandfeel
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Exception e) {
            e.printStackTrace();
        }

        String path = "";

        // 获得SMMS.jar文件所在文件夹(SMMS.jar即为编译生成的文件）
        String smmsClassPath = SMMS.class.getResource("").toString();
        //class.getResource可以获得文件目录
//        System.out.println(linkerClassPath);
        String jarName = "SMMS.jar";//打包后使用的jar名称
        //使用indexof的方法确认是否包含字串，如果不包含返回-1
        if (smmsClassPath.indexOf(jarName) >= 0) {
            // 打包后的情况,对linux和windows进行判断处理
            if (System.getProperty("os.name").startsWith("Linux")) {
                path = smmsClassPath;
                path = path.substring(path.indexOf("/"), path.indexOf(jarName));
            } else if (System.getProperty("os.name").startsWith("Windows")) {
                path = smmsClassPath;
                path = path.substring(path.indexOf("file:") + 5, path.indexOf(jarName));
            }

            try {
//                对文件使用UTF-8编码
                path = java.net.URLDecoder.decode(path, "utf-8");
//                System.out.println(path);
            } catch (UnsupportedEncodingException e) {
                System.out.println("decode path to utf-8 failed");
            }

        } else {
            /*
             * 编辑代码时的情况（同时考虑了windows和linux环境）
             * 【特定目录，不同用户编译可能不一样】
             */
            if (System.getProperty("os.name").startsWith("Linux")) {
                path = smmsClassPath;
                path = path.substring(path.indexOf("/"), path.indexOf("/SMMS"));
            } else if (System.getProperty("os.name").startsWith("Windows")) {
                path = smmsClassPath;
                path = path.substring(path.indexOf("file:") + 5, path.indexOf("/SMMS"));
            }
        }
        Core core = new Core(path);
    }
}
